2011年06月01日
川俣晶の縁側ソフトウェア技術雑記 total 6584 count

Visual Studio 2010で作成したWebサービス(.asmx)で、HttpRequestValidationException例外を抑止する方法

Written By: 川俣 晶連絡先

 えらく変な部分で引っかかったのでメモ。

 Windows 7で開発中、Visual Studio 2010で作成したWebサービス(.asmx)に、タグっぽい文字列を送り込むと、以下の例外が起きました。

System.Web.HttpRequestValidationException: 危険な可能性のある Request.Form 値がクライアント (……) から検出されました。

 しかし、全く無害で正当な入力であっても起きます。別に有害だから例外が起きるわけではありません。いきなり例外が起きては、ユーザーもびっくりします。

 これを抑止する方法を探索していてやっと分かりました。

抑止方法 §

 Web.configに以下のような内容を追加します。(既に中身があると思うので、それに矛盾しない形で同じ中身を割り込ませます)

<configuration>

    <system.web>

      <httpRuntime requestValidationMode="2.0" />

      <pages validateRequest="false" />

    </system.web>

</configuration>

罠はどこにあるのか §

 ネットを検索した結果として、pages要素だけ説明しているサイトが多いのが罠です。実際は、"<httpRuntime requestValidationMode="2.0" />"も必要でした。おそらく、旧世代のソフトでは無くても通るのでしょう。